/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package org.fh.itsbankomat.businesslogic.impl;

import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.fh.itsbankomat.businesslogic.api.BankomatSystemService;
import org.fh.itsbankomat.businesslogic.model.Bankomatkarte;
import org.fh.itsbankomat.businesslogic.model.Transaktionen;

/**
 *
 * @author Irina.Mader
 */
@Stateless
@LocalBean
public class BankomatSystemServiceImpl implements BankomatSystemService{
    @PersistenceContext
    private EntityManager em;

    @Override
    public Transaktionen pruefenBankomatKarte(Transaktionen v_Transaktion) {
        
        //prüfe ob IBAN übergeben
        // Kontonummer befüllt? (korrekte Übergabe)
        if(v_Transaktion.getIban() == null)
        {
            v_Transaktion.setMessageid("IBAN not filled");
            v_Transaktion.setMessage("pruefenBankomatKarte: IBAN not filled");
            return v_Transaktion;
        }
        
        // Karte einlesen
        Bankomatkarte karte = em.createNamedQuery("Konto.findByIban", Bankomatkarte.class)
                .setParameter(" ", v_Transaktion.getIban()).getSingleResult();
         if(karte == null)
         {
            v_Transaktion.setMessageid("KeinKontoFürDieseKarte");
            v_Transaktion.setMessage("pruefenBankomatKarte: Das Konto mit dem IBAN" + v_Transaktion.getIban() + " konnte nicht gefunden werden.");
            return v_Transaktion;
         }
        
        // prüfen ob Karte gesperrt
        if(karte.getGesperrt().compareTo('y') == 0)
        {
            v_Transaktion.setMessageid("BankomatKarteGesperrt");
            v_Transaktion.setMessage("pruefenBankomatKarte: Karte ist gesperrt");
            return v_Transaktion;
        }
        
        // PIN prüfen ?
        // --> wenn 3x falsch Karte einziehen; hier oder wo anders ausprogrammieren
        
        // prüfen Konto von KreditInstitutServiceImpl aufrufen
        
        // wenn alles ok, Geld ausbezahlen; wenn nicht Karte auswerfen
        
       
        
        return v_Transaktion;
    }

    @Override
    public Transaktionen freigebenAuszahlung(Transaktionen v_Transaktion) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public Transaktionen abbrechen(Transaktionen v_Transaktion) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
    
}
